package com.itheima.d2_byte_stream;

import java.io.*;

/**
 * 目标：掌握使用FileInputStream每次读取多个字节。
 */
public class FileInputStreamTest2 {
    public static void main(String[] args) throws IOException {
        // 1、创建一个字节输入流对象代表字节输入流管道与源文件接通。
       File file = new File("D:\\code\\javaee156\\day09file-io-app\\file\\file.txt");
        FileInputStream fileInputStream = new FileInputStream(file);
        // 2、开始读取文件中的字节数据：每次读取多个字节。
       /* byte[] bytes = new byte[100];
        int read = fileInputStream.read(bytes);//读取到字节的个数
        String str = new String(bytes,0,read);*/

       /* int leng ; //每次读取的有效字节个数
        byte[] buf = new byte[10];

        while ((leng=fileInputStream.read(buf))!=-1){
            String s = new String(buf,0,leng);
            System.out.println(s);
        }
*/
        int leng;
        byte[] buf =new byte[100];/*
        //方式一：创建一个长度和要读取的文件大小一样字节数组，读取一次 （了解）
         //创建一个足够大的字节数组，长度和文件的大小一样。
        byte[] buf = new byte[(int) file.length()];
        int len = fis.read(buf);//一次性全部读取到buf中
        System.out.println("len = " + len);
        System.out.println(new String(buf, 0, len));

          //方式二：直接调用readAllBytes
        byte[] buf = fis.readAllBytes(); 字节输入流对象.readAllBytes()
        System.out.println(new String(buf));
*/
        while ((leng=(fileInputStream.read(buf)) )!= -1) {
            String s = new String(buf,0,leng);//String s = new String(数组对象，从哪个位子开始，有效个数)
            System.out.println("s = " + s);
        }

        //  public int read(byte b[]) throws IOException
        //  每次读取多个字节到字节数组中去，返回读取的字节数量，读取完毕会返回-1.

        // 3、关闭资源
        fileInputStream.close();
    }
}
